<?php
namespace App\Financeiro\Controller;

use Foxforms\Widget\Field\Radio;

use Foxforms\Widget\Field\Select;

use Foxforms\Widget\Field\Input;

use Foxforms\Widget\Form;

class categoriaController extends \Foxframe\Controller
{
	public function viewListar($params = array())
	{
		$lista	= $this->em->getRepository('\Entities\Financeiro\Categoria')->findAll();
		$this->view->assign('lista', $lista);
	}

	public function viewSalvarCategoria($params = array())
	{
		if (isset($params['id']) && !empty($params['id']))
			$categoria	= $this->em->find('\Entities\Financeiro\Categoria', $params['id']);
		else
			$categoria	= new \Entities\Financeiro\Categoria();


		$form	= new Form();
		$form->addValues($categoria, 'categoria');
		$form->addElement(Input::create('application')->setType('hidden')->setValue('financeiro'));
		$form->addElement(Input::create('controller')->setType('hidden')->setValue('categoria'));
		$form->addElement(Input::create('method')->setType('hidden')->setValue('saveSalvarCategoria'));
		$form->addElement(Input::create('categoria[idcategoria]')->setType('hidden'));
		$form->addElement(Input::create('categoria[dsnome]')->setType('text')->setLabel('Nome')->validate()->addClass('input-large'));
		$form->addElement(Input::create('categoria[nrcodigo]')->setType('text')->setLabel('Código')->validate()->addClass('input-medium'));
		$form->addElement(Input::create('categoria[nrcodigoreduzido]')->setType('text')->setLabel('Reduzido')->validate()->addClass('input-mini'));
		$form->addElement(
				Radio::create('categoria[flstatus]')
				->setLabel('Status')
				->setOption(array('1' => 'Ativo', '0' => 'Inativo'))
				->validate()
		);
		$form->addElement(
				Radio::create('categoria[tpnatureza]')
				->setLabel('Natureza')
				->setOption(array('D' => 'Débito', 'C' => 'Crédito'))
				->validate()
		);
		$form->addElement(Input::create('salvar')->setType('submit')->setValue('Salvar')->addClass(array('btn','btn-primary')));

		if (isset($params['categoriapai']) && !empty($params['categoriapai']))
		{
			$categoriaPai	= $this->em->find('\Entities\Financeiro\Categoria', $params['categoriapai']);
			$codigoReduzido	= $this->em->getRepository('\Entities\Financeiro\Categoria')->proximoCodigoReduzido();
			$nrcodigo	= $this->em->getRepository('\Entities\Financeiro\Categoria')->proximoCodigo($categoriaPai);
// 			$cod	= explode('.', $nrcodigo);
// 			foreach ($cod as $key => $val)
// 			{
// 				if (!empty($val) &&)
// 					continue;
// 			}
// 			echo '<pre>';print_r($nrcodigo + 1);die;
			$form->getElement('categoria[nrcodigo]')->setValue($nrcodigo);
			$form->getElement('categoria[nrcodigoreduzido]')->setValue($codigoReduzido);
			$form->getElement('categoria[tpnatureza]')->setValue($categoriaPai->get('tpnatureza'));
			$form->getElement('categoria[flstatus]')->setValue($categoriaPai->get('flstatus'));
		}

		$this->view->assign('form', $form);
		return $this->returnAjax();
	}

	public function saveSalvarCategoria($params = array())
	{
		try
		{
			if (isset($params['categoria']['idcategoria']) && !empty($params['categoria']['idcategoria']))
				$categoria	= $this->em->find('\Entities\Financeiro\Categoria', $params['categoria']['idcategoria']);
			else
				$categoria	= new \Entities\Financeiro\Categoria();

			$categoria->setNome($params['categoria']['dsnome']);
			$categoria->setStatus($params['categoria']['flstatus']);
			$categoria->setCodigo($params['categoria']['nrcodigo']);
			$categoria->setCodigoReduzido($params['categoria']['nrcodigoreduzido']);
			$categoria->setNatureza($params['categoria']['tpnatureza']);

			$this->em->persist($categoria);
			$this->em->flush();

			$this->setFlash('Success', 'Sucesso', "Categoria salva com sucesso");
		}
		catch (\Exception $e)
		{
			$this->setFlash('Error', 'Erro', $e->getMessage());
		}
		$this->redirect($this->uri->getOrigem());
	}

	public function returnCategoria($params = array())
	{
		$lista	= $this->em->getRepository('\Entities\Financeiro\Categoria')->listCombo($params['tpnatureza']);

		echo json_encode($lista);
		die;
	}
}